The present invention relates generally to the useful art of computer software programming and more specifically to software relating to computer networks.
The Open Systems Interconnection Basic Reference Model (the “OSI Model”) is a well-known, abstract description for communications and computer network protocol design, consisting of seven layers. A second, increasingly popular model is the TCP/IP model which describes a similar protocol in either four or five layers. While other layer models exist, the OSI and TCP/IP models are the most common. In each of these models, there exists a Network Layer (Layer 3) and a Data Link Layer (Layer 2).
The Network Layer provides the functional and procedural means of transferring variable length data sequences from a source to a destination by performing network routing functions. At a physical level, the Data Link Layer provides the functional and procedural means to transfer data between individual network entities, thus allowing for the transfer of data from a source to its ultimate destination in a network. Thus, the cumulative operations performed at the Data Link Layer allows for the transfer of data at the Network Level.
Networks can be either connection-oriented or connectionless. A connection-oriented network is one which identifies traffic flows by some connection identifier rather than by explicitly listing source and destination addresses. In contrast, for traffic in a connectionless network, packet headers are used to define the traffic's source and/or destination. Networks can also be either stateless or statefull. In a stateless network, network requests/activity is handled as an independent transaction. In contrast, in a statefull network, previous activity occurring within the network is considered when handling current network requests/activity.
Networks have many types of physical implementations, one of which is a Wireless Network and more specifically a Wireless Local Area Network (“WLAN”). A WLAN uses radio signals instead of wires as the communication medium to transmit data back and forth between clients (e.g., computers, cell phones, etc.) on the same network. This is accomplished by having clients exchange radio signals with a portal point physically connected to the network. A portal or access point includes any device that provides access to a WLAN (e.g., a wireless router). However, since radio signals have limited physical ranges, a client can lose a network connection if it moves out of the coverage area of a given portal point.
To better organize and distribute system resources, networks are often broken down into several mini-networks or subnets. For example, a single WLAN network (a layer-three network) in an office building could have ten subnets (each being a layer-two network), one on each of the ten floors, and each having a predefined allocation of the total system resources allocated to the entire network. These subnets provide a manageable way of granting and regulating seamless wireless network access. Thus, a client computer on a particular floor connects to a portal point within that floor's subnet and has access to the resources allotted to that subnet. Having multiple portal points in various locations in a network also helps to establish strong wireless connections by minimizing the distance between portal points and clients.
However, as would be expected with users in a WLAN, clients often move from place to place resulting in moving out of the coverage area of one portal point and into the coverage area of another. For example, consider a client connecting to the WLAN network on the first floor by connecting to a first portal point on a first subnet. When this connection is made, the client establishes layer-two connectivity to the first floor subnet. In addition, the client also establishes layer-three connectivity with the network. To accomplish layer-three connectivity, an IP address belonging to the first subnet is assigned to the client and an IP session between the network and the client is created. An IP session is a lasting connection using the layer-three network layer and becomes established when the connection is made. During this “lasting connection,” the IP session is known as being active. When the connection is lost, the IP session becomes inactive (disconnected). Referring back to the floor example, if the client moves to the second floor, out of the coverage area of the first portal point, but into the coverage area of a second portal point on a second subnet, the layer-two connection to the first portal point is terminated. However, at that time, a new layer-two connection with the second portal point in the second subnet is created. Similarly, the initial IP session is terminated (becomes inactive) and reinitialized (becomes active) when the client reestablishes layer-two connectivity with the second subnet. When the new IP session is created, the client is assigned a new IP address from the second subnet.
In many circumstances, creating a new IP session with a new IP address is done seamlessly so as to produce no noticeable effect on the client. For example, a user using a client running a web browser is unlikely to notice when the current IP session is lost and the new IP session is created unless he is attempting to load a webpage at the exact moment when the change is taking place, and even then, only a slight and likely unnoticeable delay will result. However, in other applications, losing the IP address is not only noticeable, but precludes normal use of the application. For example, video conferencing and voice-over-IP (VOIP) applications require an uninterrupted IP session. Consider a user making a phone call using a VOIP application on a client VOIP device. While the user is able to maintain an active phone call while connected to the first portal point on the first floor, there can be a problem when the user moves to the second floor coverage area and attempts to continue an uninterrupted phone call. When the client disconnects from the first portal point and reconnects to the second portal point, the phone call will be lost. This lost phone call is due to the initial IP session being lost, as the VOIP application requires maintenance of a single IP session during the call.
One way to address the problem of lost IP sessions during use of such applications by the client, is to create a tunnel between the first portal point and the second portal point. A tunnel is a network protocol for encapsulated packets. The tunnel allows for the IP session to remain active, thus providing continuous layer-three connectivity even when layer-two connectivity is lost and then reestablished (i.e., when a client disconnects from the first portal point and reconnects to the second portal point). The tunnel thus allows the client to communicate to the first portal point by relaying data transmissions through the second portal point. Thus, in the above example, when a client moves from the first floor to the second floor and establishes a new layer-two connection with the second subnet, a new IP address is not assigned. Instead, the client maintains use of the original IP address assigned to it by the first subnet when the client originally connected to the first portal point. As the client communicates with the network, the data is transmitted to the second portal point, which then forwards the data to the first portal point to create the logical illusion that the client is still a member of the first subnet. Such tunneling of data occurs in both directions, thereby permitting a user to maintain uninterrupted VOIP phone calls or the like when moving between different portal points in different subnets across a WLAN.
While tunnels have the advantage of allowing mobile clients to roam between subnets while maintaining the same IP session, they also have several disadvantages. Specifically, tunnels cause network latency, as packets of data need to be tunneled to the original portal point before performing normal packet forwarding. Such routing demands additional use of network bandwidth, an important network resource. To minimize network latency, system administrators often implement architectural and design constraints placing limits on the number of tunnels that can simultaneously exist in a network.